﻿#define _CRT_SECURE_NO_WARNINGS

#include "Binary Search Tree.h"

//int main() {
//	int a[] = { 8, 3, 1, 10, 6, 4, 7, 14, 13 };
//	BSTree<int> bt;
//	for (auto e : a)
//		//bt.Insert(e);
//		bt.InsertR(e);
//	bt.InOrder();
//
//	bt.Erase(14);
//	bt.InOrder();
//	bt.Erase(3);
//	bt.InOrder();
//	bt.Erase(8);
//	bt.InOrder();
//
//	//bt.EraseR(14);
//	//bt.InOrder();
//	//bt.EraseR(3);
//	//bt.InOrder();
//	//bt.EraseR(8);
//	//bt.InOrder();
//
//	for (auto e : a) {
//		bt.Erase(e);
//		bt.InOrder();
//	}
//
//	return 0;
//}



//int main() {
//	int a[] = { 8, 3, 1, 10, 6, 4, 7, 14, 13 };
//	key::BSTree<int> bt;
//	for (auto e : a)
//		bt.InsertR(e);
//	bt.InOrder();
//
//	key::BSTree<int> copy(bt);
//	copy.InOrder();
//	return 0;
//}



//字典
//int main() {
//	kv::BSTree<string, string> dict;
//	dict.Insert("sort", "排序");
//	dict.Insert("left", "左边");
//	dict.Insert("right", "右边");
//	dict.Insert("insert", "插入");
//	dict.Insert("key", "关键字");
//	
//	string str;
//	while (cin >> str) {
//		kv::BSTreeNode<string, string>* ret = dict.Find(str);
//		if (ret)
//			cout << ret->_value << endl;
//		else
//			cout << "无此单词" << endl;
//	}
//	return 0;
//}



//统计单词出现的次数
int main() {
	string arr[] = { "苹果", "西瓜", "苹果", "西瓜", "苹果", "苹果", "西瓜", "苹果", "香蕉", "苹果", "香蕉" };
	kv::BSTree<string, int> countTree;
	for (auto& e : arr) {
		kv::BSTreeNode<string, int>* ret = countTree.Find(e);
		if (ret == nullptr)
			countTree.Insert(e, 1);
		else
			ret->_value++;
	}
	countTree.InOrder();
	return 0;
}